package eighth_day;

/**
 * 将用户输入的字符串转化（压缩）。
 * 例如： "aabbccdaa" -> "a2b2c2d1a2" 或者 例如： "abbcccffr" -> "a1b2c3f2r1"
 */
public class CompressString {
    public static String compress(String str) {
        if (str == null || str.length() == 0) {
            return str;
        }
        StringBuilder res = new StringBuilder();
        int flag = 0; // 记录下次变化的位置
        int num1 = str.charAt(0); // 记录前一个字母的哈希值
        for (int i = 0; i < str.length(); i++) {
            int num2 = str.charAt(i);
            if ((num1 ^ num2) != 0) {
                // 字符变化
                res.append(str.charAt(flag));
                int num = i - flag;
                flag = i;
                res.append(num);
                // 更新num1
                num1 = num2;
            }
        }
        // 处理最后一种字符
        res.append(str.charAt(flag));
        res.append(str.length() - flag);
        return res.toString();
    }

    public static void main(String[] args) {
        String str = "abbcccffr";
        System.out.println(compress(str));
    }
}
